<!DOCTYPE html>
<html lang="zh-cn">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>javascript 阶段</title>
</head>
<body>


    <script>
        // 1. 双重循环（粗暴）
        // 2. 冒泡排序
        // 3. 数组 sort 方法
        // 4. 插入排序
        // 5. 快速排序（递归）

        // 定义函数  mySort 
        var mySort = function(array) {
            // 外循环数组
            for(var i = 0 ; i < array.length ; i ++){
                // 记录有序数组的索引值（下标）
                var j = i  -  1;
                // 记录每个无序数组的值
                var temp = array[i];
                // 内循环，根据条件做大小的比较
                while(j >= 0 && temp < array[j]){
                    // 把有序数组中较大的数值往后一位移动
                    array[j + 1] = array[j];
                    // 一方面为了计算插入数据的下标（插入有序数组的）
                    // 另一方面是为了继续当前的while循环
                    j --;
                }
                // 当while循环结束，就可以插入数据
                array[j + 1] = temp;
            }
            // 整个for循环结束（数组完成排序）
            return array;
        }

        // 调用函数
        var res = mySort([80,20,50,60,30]);

        console.log(res);//[20, 30, 50, 60, 80]

    </script>
</body>
</html>